/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package utilitario;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Rodrigo
 */
public class Arquivo {

    //metodo para criar arquivo com lista de funcionarios
    public static void armazenarFuncionario(ArrayList<Funcionario> lista) {
        try {
            FileOutputStream fos = new FileOutputStream("docs/funcionarios.dat");
            try {
                ObjectOutputStream obj = new ObjectOutputStream(fos);
                System.out.println("Criando arquivo");
                obj.writeObject(lista);
                
            } catch (IOException ex) {
                Logger.getLogger(Arquivo.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Arquivo.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Não pode ser criado");
        }
        
        
    }

    //metodo para ler lista de funcionarios
    public static ArrayList<Funcionario> lerFuncionario() {
        ArrayList a = new ArrayList();
        try {
            FileInputStream fis = new FileInputStream("docs/funcionarios.dat");
            try {
                ObjectInputStream obj = new ObjectInputStream(fis);
                System.out.println("Lendo arquivo");
                return(a = (ArrayList<Funcionario>) obj.readObject());
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Arquivo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(Arquivo.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (FileNotFoundException ex) {
            System.out.println("Não foi encontrado o arquivo");
            armazenarFuncionario(a);
            return a;
        }
        return a;
    }
    
    public static void armazenarFuncionarioTemporariamente(ArrayList<Funcionario> lista) {
        try {
            FileOutputStream fos = new FileOutputStream("docs/tempfuncionarios.dat");
            try {
                ObjectOutputStream obj = new ObjectOutputStream(fos);
                System.out.println("Criando arquivo");
                obj.writeObject(fos);
            } catch (IOException ex) {
                Logger.getLogger(Arquivo.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Arquivo.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("O arquivo não pode ser criado");
        }
        
        
    }

    //metodo para ler lista de funcionarios
    public static ArrayList<Funcionario> lerFuncionarioTemporariamente() {
        ArrayList<Funcionario> a = new ArrayList<>();
        try {
            FileInputStream fis = new FileInputStream("docs/tempfuncionarios.dat");
            try {
                ObjectInputStream obj = new ObjectInputStream(fis);
                System.out.println("Lendo arquivo");
                return (ArrayList<Funcionario>) obj.readObject();
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Arquivo.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(Arquivo.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (FileNotFoundException ex) {
            armazenarFuncionarioTemporariamente(a);
        }
        return a;
    }
    
    
    
    
    public static void main(String[] args) {
        
    }
}
